/**
 * arrow function
 * 不会绑定this、arguments属性
 * 不能作为构造函数来使用
 * (arg1, arg2) => {....}
 */
//简写1：如果只有一个参数，可以省略()
const foo = item => {
  console.log(item)
}

//简写2：如果执行体只有一行，可以省略{}
const foo1 = (value, index) => console.log(value, index)

//简写3：如果执行体只有一行代码，且返回的是一个对象可以加（）
const foo2 = () => ({name: 'lijing', age: 17})

/**
 * arrow function的this
 * 上述讲的四个规则都没有用，测试如下:
 */
const bar = () => {
  console.log(this)
}

bar() //window
var obj = {bar: bar}
obj.bar() //window

bar.call('call') //window
bar.apply('call') //window
var bar1 = bar.bind('bind')
bar1()//window

/**
 * arrow function的this将从上一层作用域去找
 */
